package com.qgs.waf.service;

import java.util.List;
import java.util.Map;
import java.util.Set;

import org.springframework.data.redis.connection.jedis.JedisConnection;
import org.springframework.data.redis.core.ZSetOperations.TypedTuple;

import redis.clients.jedis.Jedis;

/**
 * @show 受攻击汇总
 * @author Administrator
 *
 */
@SuppressWarnings("rawtypes")
public interface RedisService {
	/**
	 * @show 直接获取缓存数据
	 * @return
	 */
	Map<String, String> getHashSet(String hash_key);

	/**
	 * @show 取得Zset数据
	 * @param key
	 * @param min
	 * @param max
	 * @return
	 */
	Set<TypedTuple> rangeWithScores(Object key, long min, long max);

	/**
	 * @show 取得Zset数据
	 * @param key
	 * @param min
	 * @param max
	 * @return
	 */
	Set rangeByScore(Object key, long min, long max);

	/**
	 * 获取Jedis连接
	 * 
	 * @return
	 */
	JedisConnection getJedisClient();

	/**
	 * @show 获取所有Hash名称
	 * @param key
	 * @return
	 */
	Set<String> hKeys(String key);

	/**
	 * @show 获取所有数据
	 * @param key
	 * @return
	 */
	Map<String, String> hGetAll(String key);

	/**
	 * 获取Hash单个熟悉
	 * 
	 * @param key
	 * @param field
	 * @return
	 */
	byte[] hGet(byte[] key, byte[] field);

	List<byte[]> hMGet(byte[] key, byte[]... fields);

	List<String> hMGet(String key, String... fields);

	Set<byte[]> hKeys(byte[] key);

	List<byte[]> hVals(byte[] key);

	/**
	 * 获取jedis客户端
	 * 
	 * @return
	 */
	Jedis getJedis();

	/**
	 * 获取key和value
	 * 
	 * @param key
	 * @param fileds
	 * @return List<Map<String, String>>
	 */
	List<Map<String, String>> keysAndValues(String key, String pro_key, String pro_value, String... fileds);

	/**
	 * 或许Hash数值
	 * 
	 * @param key
	 * @param pro_key
	 * @param pro_value
	 * @param pro_score
	 * @param scores
	 * @param fileds
	 * @return
	 */
	String keysAndValues4Redis(String key, String pro_key, String pro_value, String pro_score, Number[] scores, String... fileds);

	/**
	 * 获取key和value 格式为id name
	 * @param key
	 * @param pro_key
	 * @param pro_value
	 * @param fileds
	 * @return
	 */
	String keyAndValue(String key,String pro_key,String pro_value, String... fileds);
}
